package com.rh.number.mapper;

import com.rh.number.dto.StatsResultDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface StatsResulMapper {
    // 客户维度分页
    List<StatsResultDTO> countByClientPage(
            @Param("province") String province,
            @Param("city") String city,
            @Param("upstream") String upstream,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    int countByClientTotal(
            @Param("province") String province,
            @Param("city") String city,
            @Param("upstream") String upstream);

    // 客户-上游分页
    List<StatsResultDTO> countByClientUpstreamPage(
            @Param("province") String province,
            @Param("city") String city,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    int countByClientUpstreamTotal(
            @Param("province") String province,
            @Param("city") String city);

    // 客户-上游-地区分页
    List<StatsResultDTO> countByClientUpstreamRegionPage(
            @Param("client") String client,
            @Param("upstream") String upstream,
            @Param("province") String province,
            @Param("city") String city,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    int countByClientUpstreamRegionTotal(
            @Param("client") String client,
            @Param("upstream") String upstream,
            @Param("province") String province,
            @Param("city") String city);

    // 上游维度分页
    List<StatsResultDTO> countByUpstreamPage(
            @Param("province") String province,
            @Param("city") String city,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    int countByUpstreamTotal(
            @Param("province") String province,
            @Param("city") String city);

    // 地区维度分页
    List<StatsResultDTO> countByRegionPage(
            @Param("level") String level,
            @Param("upstream") String upstream,
            @Param("province") String province,
            @Param("city") String city,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    int countByRegionTotal(
            @Param("level") String level,
            @Param("upstream") String upstream,
            @Param("province") String province,
            @Param("city") String city);
}